home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Technology Seed / ADC Seed CD - July 1999.toast / USB / Mac OS USB DDK v1.2 / Examples / USBSampleStorageDriver / StorageClassUTDriverIcons.c < prev    next >
Encoding:
C/C++ Source or Header  |  1999-04-15  |  15.8 KB  |  332 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        StorageClassUTDriverIcons.c
  3.  
  4.     Contains:    All declarations and types that are associated with the 
  5.                 Driver's Drive and Media Icons.
  6.  
  7.     Version:    1.1
  8.  
  9.     Copyright:    © 1998-1999 by Apple Computer, Inc., all rights reserved.
  10.  
  11. */
  12. #include <DriverServices.h>
  13. #include <Folders.h>
  14.  
  15. #include "StorageClassUTDriverIcons.h"
  16.  
  17. IconFamilyPtr        CartridgeMediaIconFamily;
  18. IconFamilyHandle    FloppyMediaIconFamily;
  19.  
  20. // The IconRef is used for getting the Floppy family of Icons from the system
  21. static     IconRef  theFloppyIconRef;
  22.  
  23. // This is the black and white Apple Floppy icon and mask for use in
  24. // systems where the IconServicesLib isn't present
  25. DiskIcon AppleFloppyMediaIcon =    
  26. {
  27.     0x7FFF, 0xFFF0, 0x8080, 0x0208, 0x8080, 0xE204, 0x8081, 0x1202,
  28.     0x8081, 0x1202, 0x8081, 0x1202, 0x8081, 0x1202, 0x8081, 0x1202,
  29.     0x8080, 0xE202, 0x8080, 0x0202, 0x807F, 0xFC02, 0x8000, 0x0002,
  30.     0x8000, 0x0002, 0x8000, 0x0002, 0x8000, 0x0002, 0x87FF, 0xFFC2,
  31.     0x8800, 0x0022, 0x8800, 0x0022, 0x8800, 0x0022, 0x8800, 0x0022,
  32.     0x8800, 0x0022, 0x8800, 0x0022, 0x8800, 0x0022, 0x8800, 0x0022,
  33.     0x8800, 0x0022, 0x8800, 0x0022, 0x8800, 0x0022, 0x8800, 0x0022,
  34.     0x8800, 0x0022, 0x8800, 0x0022, 0x8800, 0x0022, 0x7FFF, 0xFFFC,
  35.  
  36.     /*************************  MASK  ****************************/
  37.     0x7FFF, 0xFFF0, 0xFFFF, 0xFFF8, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFE,
  38.     0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE,
  39.     0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE,
  40.     0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE,
  41.     0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE,
  42.     0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE,
  43.     0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE,
  44.     0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFE, 0x7FFF, 0xFFFC
  45. };
  46.  
  47. // The following structures are all used by the driver in systems
  48. // that support the color icons by use of the IconServicesLib
  49.  
  50. // This is the Large 1 bit Cartridge icon and mask, this is also used in
  51. // systems where the IconServicesLib isn't present
  52. DiskIcon CartridgeIcon =        //cartridge icon
  53. {
  54.     0x0000, 0x0000, 0x3BFF, 0xFFF0, 0x4440, 0x0108, 0x8440, 0x0104,
  55.     0x8441, 0xE104, 0x8441, 0x2104, 0x8441, 0x2104, 0x8441, 0x2104,
  56.     0x8441, 0x2104, 0x8441, 0xE104, 0x8440, 0x0104, 0x8440, 0x0104,
  57.     0x8440, 0x0104, 0x8440, 0x0104, 0x8440, 0x0104, 0x8440, 0x0104,
  58.     0x8440, 0x0104, 0x847F, 0xFF04, 0x8400, 0x0104, 0x8400, 0x0104,
  59.     0x8400, 0x0104, 0x8400, 0x0104, 0x8400, 0x0104, 0x8400, 0x0104,
  60.     0x8400, 0x0104, 0x8400, 0x0104, 0x8400, 0x0106, 0x8400, 0x0107,
  61.     0x8400, 0x0107, 0x8400, 0x0107, 0x8400, 0x0107, 0x7FFF, 0xFFFE,
  62.     
  63.     /*************************  MASK  ****************************/
  64.     0x0000, 0x0000, 0x3BFF, 0xFFF0, 0x7FFF, 0xFFF8, 0xFFFF, 0xFFFC,
  65.     0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC,
  66.     0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC,
  67.     0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC,
  68.     0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC,
  69.     0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC,
  70.     0xFFFF, 0xFFFC, 0xFFFF, 0xFFFC, 0xFFFF, 0xFFFE, 0xFFFF, 0xFFFF,
  71.     0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x7FFF, 0xFFFE
  72. };
  73.  
  74. // This is the Large 4 bit Cartridge icon
  75. UInt16 Media_icl4[] = 
  76. {
  77.     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  78.     0x00FF, 0xF0AF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000,
  79.     0x0F00, 0x0DCC, 0xCA00, 0x0000, 0x0000, 0x0CA0, 0x000C, 0xF000,
  80.     0xF00C, 0xCDCC, 0xCD0C, 0x0C0C, 0xCCCC, 0xCCD0, 0xCCCC, 0xDF00,
  81.     0xF0CC, 0xCDCC, 0xCD00, 0xC00E, 0xEEE0, 0xCCD0, 0xCCCC, 0xDF00,
  82.     0xF0CC, 0xCDCC, 0xCD0C, 0x0C0E, 0xDDD0, 0xCCD0, 0xCCCC, 0xDF00,
  83.     0xF0CC, 0xCDCC, 0xCD00, 0xCC0E, 0xDDD0, 0xCCD0, 0xCCCC, 0xDF00,
  84.     0xF0CC, 0xCDCC, 0xCD0C, 0xCC0E, 0xDDD0, 0xCCD0, 0xCCCC, 0xDF00,
  85.     0xF0CC, 0xCDCC, 0xCD0C, 0xCC0E, 0xDDD0, 0xCCD0, 0xCCCC, 0xDF00,
  86.     0xF0CC, 0xCDCC, 0xCD0C, 0xCC0E, 0xDDD0, 0xCCD0, 0xCCCC, 0xDF00,
  87.     0xF0CC, 0xCDCC, 0xCD0C, 0xCC00, 0x0000, 0xCCD0, 0xCCCC, 0xDF00,
  88.     0xF0CC, 0xCDCC, 0xCD0C, 0xCCCC, 0xCCCC, 0xCCD0, 0xCCCC, 0xDF00,
  89.     0xF0CC, 0xCDCC, 0xCD0C, 0xCCCC, 0xCCCC, 0xCCD0, 0xCCCC, 0xDF00,
  90.     0xF0CC, 0xCDCC, 0xCD0C, 0xCCCC, 0xCCCC, 0xCCD0, 0xCCCC, 0xDF00,
  91.     0xF0CC, 0xCDCC, 0xCD0C, 0xCCCC, 0xCCCC, 0xCCD0, 0xCCCC, 0xDF00,
  92.     0xF0CC, 0xCDCC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCD0, 0xCCCC, 0xDF00,
  93.     0xF0CC, 0xCDCC, 0xCDDD, 0xDDDD, 0xDDDD, 0xDDE0, 0xCCCC, 0xDF00,
  94.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  95.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  96.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  97.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  98.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  99.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  100.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  101.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  102.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDF00,
  103.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDFA0,
  104.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDFAA,
  105.     0xF0CC, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDFAA,
  106.     0xF00C, 0xCDCC, 0xCCCC, 0xCCCC, 0xCCCC, 0xCCC0, 0xCCCC, 0xDFAA,
  107.     0xFDDD, 0xDDDD, 0xDDDD, 0xDDDD, 0xDDDD, 0xDDDC, 0xDDDD, 0xDFAA,
  108.     0x0FFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFAA0
  109. };
  110.  
  111. // This is the Large 8 bit Cartridge icon
  112. UInt16 Media_icl8[] =
  113. {
  114.     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  115.     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  116.     0x0000, 0xFFFF, 0xFF00, 0xFDFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  117.     0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000,
  118.     0x00FF, 0x0000, 0x00FA, 0xF6F6, 0xF6FD, 0x0000, 0x0000, 0x0000,
  119.     0x0000, 0x0000, 0x00F6, 0xFD00, 0x00F5, 0xF52B, 0xFF00, 0x0000,
  120.     0xFF00, 0x00F6, 0xF6FA, 0xF8F8, 0xF8F9, 0x00F6, 0x00F6, 0x00F6,
  121.     0xF6F6, 0xF6F6, 0xF6F6, 0xFA00, 0xF62B, 0xF7F8, 0xF9FF, 0x0000,
  122.     0xFF00, 0xF62B, 0x2BFA, 0xF8F8, 0xF8F9, 0x0000, 0xF600, 0x00FB,
  123.     0xFBFB, 0xFB00, 0xF6F6, 0xFA00, 0x2BF7, 0xF7F8, 0xF9FF, 0x0000,
  124.     0xFF00, 0xF6F7, 0x2BFA, 0xF8F8, 0xF8F9, 0x00F6, 0x00F6, 0x00FB,
  125.     0xF9F9, 0xF900, 0xF6F6, 0xFA00, 0x2BF7, 0xF7F8, 0xF9FF, 0x0000,
  126.     0xFF00, 0xF7F7, 0xF7FA, 0xF8F8, 0xF8F9, 0x0000, 0xF6F6, 0x00FB,
  127.     0xF9F9, 0xF900, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  128.     0xFF00, 0x2BF7, 0xF7FA, 0xF8F8, 0xF8F9, 0x00F6, 0xF6F6, 0x00FB,
  129.     0xF9F9, 0xF900, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  130.     0xFF00, 0x2BF7, 0xF7FA, 0xF8F8, 0xF8F9, 0x00F6, 0xF6F6, 0x00FB,
  131.     0xF9F9, 0xF900, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  132.     0xFF00, 0x2BF7, 0xF7FA, 0xF8F8, 0xF8F9, 0x00F6, 0xF6F6, 0x00FB,
  133.     0xF9F9, 0xF900, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  134.     0xFF00, 0x2BF7, 0xF7FA, 0xF8F8, 0xF8F9, 0x00F6, 0xF6F6, 0x0000,
  135.     0x0000, 0x0000, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  136.     0xFF00, 0x2BF7, 0xF7FA, 0xF8F8, 0xF8F9, 0x00F6, 0xF6F6, 0xF6F6,
  137.     0xF6F6, 0xF6F6, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  138.     0xFF00, 0x2BF7, 0xF7FA, 0xF8F8, 0xF8F9, 0x00F6, 0xF6F6, 0xF6F6,
  139.     0xF6F6, 0xF6F6, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  140.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F9, 0x00F6, 0xF6F6, 0xF6F6,
  141.     0xF6F6, 0xF6F6, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  142.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F9, 0x00F6, 0xF6F6, 0xF6F6,
  143.     0xF6F6, 0xF6F6, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  144.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F9, 0xF7F6, 0xF6F6, 0xF6F6,
  145.     0xF6F6, 0xF6F6, 0xF6F6, 0xFA00, 0xF7F7, 0xF7F8, 0xF9FF, 0x0000,
  146.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F9, 0xFAFA, 0xFAFA, 0xFAFA,
  147.     0xFAFA, 0xFAFA, 0xFAFA, 0xFB00, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  148.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  149.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  150.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  151.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  152.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  153.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  154.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  155.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  156.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  157.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  158.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  159.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  160.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  161.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  162.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  163.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  164.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  165.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF8F8, 0xF7F8, 0xF9FF, 0x0000,
  166.     0xFF00, 0x2BF7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  167.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF7F8, 0xF7F8, 0xF9FF, 0xFD00,
  168.     0xFF00, 0xF7F7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  169.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF7F8, 0xF7F8, 0xF9FF, 0xFDFD,
  170.     0xFF00, 0xF7F7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  171.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF7F8, 0xF7F8, 0xF9FF, 0xFDFD,
  172.     0xFF00, 0xF5F7, 0xF7FA, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7,
  173.     0xF7F7, 0xF7F7, 0xF7F7, 0xF700, 0xF7F8, 0xF7F8, 0xF9FF, 0xFDFD,
  174.     0xFFF9, 0xF9F9, 0xF9FA, 0xF9F9, 0xF9F9, 0xF9F9, 0xF9F9, 0xF9F9,
  175.     0xF9F9, 0xF9F9, 0xF9F9, 0xF92B, 0xF9F9, 0xF9F9, 0xF9FF, 0xFDFD,
  176.     0x00FF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
  177.     0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFD, 0xFD00
  178. };
  179.  
  180. // This is the small 1 bit Cartridge icon and mask
  181. UInt16 Media_ics1[] =
  182. {
  183.     0x7FFC, 0xA812, 0xA9D2, 0xA952, 0xA9D2, 0xA812, 0xA812, 0xA812,
  184.     0xAFF2, 0xA012, 0xA012, 0xA012, 0xA012, 0xA013, 0xA013, 0xFFFF,
  185.     0x7FFC, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE,
  186.     0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF
  187. };
  188.  
  189. // This is the small 4 bit Cartridge icon
  190. UInt16 Media_ics4[] = 
  191. {
  192.     0x0FFF, 0xFFFF, 0xFFFF, 0xFF00, 0xFCDC, 0xDCCC, 0xCCCD, 0xCCF0,
  193.     0xFCDC, 0xDCCE, 0xEECD, 0xCCF0, 0xFCDC, 0xDCCE, 0xDDCD, 0xCCF0,
  194.     0xFCDC, 0xDCCE, 0xDDCD, 0xCCF0, 0xFCDC, 0xDCCC, 0xCCCD, 0xCCF0,
  195.     0xFCDC, 0xDCCC, 0xCCCD, 0xCCF0, 0xFCDC, 0xDCCC, 0xCCCD, 0xCCF0,
  196.     0xFCDC, 0xDDDD, 0xDDDE, 0xCCF0, 0xFCDC, 0xCCCC, 0xCCCC, 0xCCF0,
  197.     0xFCDC, 0xCCCC, 0xCCCC, 0xCCF0, 0xFCDC, 0xCCCC, 0xCCCC, 0xCCF0,
  198.     0xFCDC, 0xCCCC, 0xCCCC, 0xCCF0, 0xFCDC, 0xCCCC, 0xCCCC, 0xCCFA,
  199.     0xFCDC, 0xCCCC, 0xCCCC, 0xCCFA, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFA
  200. };
  201.  
  202. // This is the small 8 bit Cartridge icon
  203. UInt16 Media_ics8[] =
  204. {
  205.     0x00FF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000,
  206.     0xFFF6, 0xFAF8, 0xFDF6, 0xF6F6, 0xF6F6, 0xF6FD, 0xF6F8, 0xFF00,
  207.     0xFFF7, 0xFAF8, 0xF9F6, 0xF6FB, 0xFBFB, 0xF6FA, 0xF7F8, 0xFF00,
  208.     0xFFF7, 0xFAF8, 0xF9F6, 0xF6FB, 0xF9F9, 0xF6FA, 0xF7F8, 0xFF00,
  209.     0xFFF7, 0xFAF8, 0xF9F6, 0xF6FB, 0xF9F9, 0xF6FA, 0xF7F8, 0xFF00,
  210.     0xFFF7, 0xFAF8, 0xF9F6, 0xF6F6, 0xF6F6, 0xF6FA, 0xF7F8, 0xFF00,
  211.     0xFFF7, 0xFAF8, 0xF9F6, 0xF6F6, 0xF6F6, 0xF6FA, 0xF7F8, 0xFF00,
  212.     0xFFF7, 0xFAF7, 0xF9F7, 0xF6F6, 0xF6F6, 0xF6FA, 0xF7F8, 0xFF00,
  213.     0xFFF7, 0xFAF7, 0xF9FA, 0xFAFA, 0xFAFA, 0xFAFB, 0xF8F8, 0xFF00,
  214.     0xFFF7, 0xFAF7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF8F8, 0xFF00,
  215.     0xFFF7, 0xFAF7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF8F8, 0xFF00,
  216.     0xFFF7, 0xFAF7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF8F8, 0xFF00,
  217.     0xFFF7, 0xFAF7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF8F8, 0xFF00,
  218.     0xFFF7, 0xFAF7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF8F8, 0xFFFD,
  219.     0xFFF7, 0xFAF7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF7F7, 0xF8F8, 0xFFFD,
  220.     0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFD
  221. };
  222. // The IconServicesLib also supports 32 bit color icons with 8 bit masks,
  223. // but currently this driver does not include the icons for this style.
  224.  
  225. void BuildMediaIconFamily( void )
  226. {
  227.     UInt32                 sizeOfFamily;
  228.     UInt32                 elementOffset = 0;
  229.     OSErr                err;
  230.     IconFamilyElement     *CartridgeMedia_ICN1;
  231.     IconFamilyElement    *CartridgeMedia_icl4;
  232.     IconFamilyElement    *CartridgeMedia_icl8;
  233.     IconFamilyElement     *CartridgeMedia_ics1;
  234.     IconFamilyElement     *CartridgeMedia_ics4; 
  235.     IconFamilyElement     *CartridgeMedia_ics8;
  236.  
  237.     // Check to see if the IconServices Library was imported by checking
  238.     // if the address of the GetIconRef call is nil, if it is don't do any
  239.     // of the IconServices calls
  240.     if(GetIconRef==nil)
  241.     {
  242.         FloppyMediaIconFamily = nil;
  243.         CartridgeMediaIconFamily = nil;
  244.         return;
  245.     }
  246.     
  247.     // Set up the Floppy Icon Family
  248.     err = GetIconRef(kOnSystemDisk, kSystemIconsCreator, kGenericFloppyIcon, &theFloppyIconRef);
  249.     if ( err == noErr )
  250.     {
  251.         err = IconRefToIconFamily (theFloppyIconRef, kSelectorAllAvailableData, &FloppyMediaIconFamily);
  252.     }
  253.     else
  254.     {
  255.         FloppyMediaIconFamily = nil;
  256.     }
  257.  
  258.     // Calculate the size of the Cartridge icon Family resource
  259.     sizeOfFamily = (sizeof(IconFamilyResource) - sizeof(IconFamilyElement)) + ((sizeof(OSType) + sizeof(Size)) * 6 ) + sizeof(CartridgeIcon) 
  260.                     + sizeof(Media_icl4) + sizeof(Media_icl8) + sizeof(Media_ics1) + sizeof(Media_ics4) + sizeof(Media_ics8);
  261.  
  262.     CartridgeMediaIconFamily = (IconFamilyPtr) PoolAllocateResident(sizeOfFamily, true);
  263.     if(CartridgeMediaIconFamily == nil)
  264.     {
  265.         return;
  266.     }
  267.     
  268.     // Set up the Icon family structure
  269.     CartridgeMediaIconFamily->resourceType = kIconFamilyType;
  270.     CartridgeMediaIconFamily->resourceSize = sizeOfFamily;
  271.  
  272.     // Set up the one bit small icon and mask
  273.     elementOffset = 0; 
  274.     CartridgeMedia_ics1 = (IconFamilyElement *) &CartridgeMediaIconFamily->elements;
  275.     CartridgeMedia_ics1->elementType = kSmall1BitMask;
  276.     CartridgeMedia_ics1->elementSize = (sizeof(OSType) + sizeof(Size)) + sizeof(Media_ics1);
  277.     BlockMove(&Media_ics1, &CartridgeMedia_ics1->elementData[0], sizeof(Media_ics1));
  278.  
  279.     // Set up the four bit color small icon
  280.     elementOffset += CartridgeMedia_ics1->elementSize; 
  281.     CartridgeMedia_ics4 = (IconFamilyElement *)(((UInt32) &CartridgeMediaIconFamily->elements) + elementOffset);
  282.     CartridgeMedia_ics4->elementType = kSmall4BitData;
  283.     CartridgeMedia_ics4->elementSize = (sizeof(OSType) + sizeof(Size)) + sizeof(Media_ics4);
  284.     BlockMove(&Media_ics4, &CartridgeMedia_ics4->elementData[0], sizeof(Media_ics4));
  285.  
  286.     // Set up the 8 bit color small icon
  287.     elementOffset += CartridgeMedia_ics4->elementSize; 
  288.     CartridgeMedia_ics8 = (IconFamilyElement *)(((UInt32) &CartridgeMediaIconFamily->elements) + elementOffset);
  289.     CartridgeMedia_ics8->elementType = kSmall8BitData;
  290.     CartridgeMedia_ics8->elementSize = (sizeof(OSType) + sizeof(Size)) + sizeof(Media_ics8);
  291.     BlockMove(&Media_ics8, &CartridgeMedia_ics8->elementData[0], sizeof(Media_ics8));
  292.     
  293.     // Set up the one bit Large icon and mask
  294.     elementOffset += CartridgeMedia_ics8->elementSize; 
  295.     CartridgeMedia_ICN1 = (IconFamilyElement *)(((UInt32) &CartridgeMediaIconFamily->elements) + elementOffset);
  296.     CartridgeMedia_ICN1->elementType = kLarge1BitMask;
  297.     CartridgeMedia_ICN1->elementSize = (sizeof(OSType) + sizeof(Size)) + sizeof(CartridgeIcon);
  298.     BlockMove(&CartridgeIcon, &CartridgeMedia_ICN1->elementData[0], sizeof(CartridgeIcon));
  299.  
  300.     // Set up the four bit color Large icon
  301.     elementOffset += CartridgeMedia_ICN1->elementSize; 
  302.     CartridgeMedia_icl4 = (IconFamilyElement *)(((UInt32) &CartridgeMediaIconFamily->elements) + elementOffset);
  303.     CartridgeMedia_icl4->elementType = kLarge4BitData;
  304.     CartridgeMedia_icl4->elementSize = (sizeof(OSType) + sizeof(Size)) + sizeof(Media_icl4);
  305.     BlockMove(&Media_icl4, &CartridgeMedia_icl4->elementData[0], sizeof(Media_icl4));
  306.  
  307.     // Set up the 8 bit color Large icon
  308.     elementOffset += CartridgeMedia_icl4->elementSize; 
  309.     CartridgeMedia_icl8 = (IconFamilyElement *)(((UInt32) &CartridgeMediaIconFamily->elements) + elementOffset);
  310.     CartridgeMedia_icl8->elementType = kLarge8BitData;
  311.     CartridgeMedia_icl8->elementSize = (sizeof(OSType) + sizeof(Size)) + sizeof(Media_icl8);
  312.     BlockMove(&Media_icl8, &CartridgeMedia_icl8->elementData[0], sizeof(Media_icl8));
  313. }
  314.  
  315. // Release the icons and any memory that is used by them
  316. void DestroyMediaIconFamily( void )
  317. {
  318.     if ( CartridgeMediaIconFamily != nil)
  319.     {
  320.         PoolDeallocate(CartridgeMediaIconFamily);
  321.     }
  322.     
  323.     CartridgeMediaIconFamily = nil;
  324.     
  325.     if ( FloppyMediaIconFamily != nil )
  326.     {
  327.         ReleaseIconRef(theFloppyIconRef);
  328.     }
  329.  
  330.     FloppyMediaIconFamily = nil;
  331. }
  332.